Businesses utilize a large number of applications in their day-to-day operations. For example, applications for accounting, human resources, sales, and other departments each may utilize specialized applications that facilitate operations of that department. However, while each department may have its own specific functions and duties, information may be shared across multiple departments. As an example, an accounting department computer system may rely on data from a human resources computer system or may even utilize certain functions of a human resources computing system. Accordingly, it is often desirable to integrate the various systems of a business such that they can share data and call on each other to perform various functions as appropriate.
One approach to integration of business systems has been through service-oriented architecture (SOA). With SOA, business developers make functions of different systems available to one another over a network by passing data to one another using one or more protocols. One popular way of implementing SOA is through the use of web services where functions of various business systems are made accessible over standard Internet protocols. Web services may be utilized within an organization to integrate the organization's systems. Additionally, web services of third parties may be utilized in order to provide increased functionality within a business.
It is not uncommon for a business application to utilize one or more web services during its execution. As an example, an application for a travel agent may utilize external web services of airlines, hotels, and other travel-related service providers in order to provide price quotations to a customer and/or to order one or more services. The application may also use internal web services, for example, to retrieve customer information that is stored in a database maintained by the travel agency. As another example, when a new employee arrives at an organization, the employee needs to be set up with the various business systems, such as a human resources system, an email system, and any other system used for the employee's duties. Instead of manually setting the employee up with each system, which may involve inputting the same data into many different systems, workflows may be used in order to set the employee up from a central location and to avoid repeatedly entering the same data.
An application making use of web services typically must orchestrate the web service being used. One way of doing this that has developed is through the use of the business process execution language (BPEL), which is an executable language for orchestrating the interactions with web services. Typically, web services are first published (either internally or externally) and then orchestrated into business flows. The orchestration of the business flows may be embodied in a BPEL file which is executed by an orchestration server which invokes the various services and processes the payload which is being passed on from the invoking application to the BPEL process's.
A BPEL process (workflow) typically comprises a plurality of child processes (generically referred to as processes) that are performed according to a BPEL file for the BPEL process. For instance, continuing the new employee example above, a BPEL process of creation of the employee's identity in the business' systems may include child processes of seeking approval from a manager, telling other systems about the access rights granted to the employee, and completing the parent process by providing a message that the identity has successfully been created. Generally, the BPEL file, as executed by an orchestration server, defines when and how the child processes are performed. For instance, the BPEL file may specify that certain child processes are to be performed in a particular order, that a payload from one process is used in another process, or that certain child processes are performed when certain conditions are fulfilled or certain logic needs to be called continuously or multiple times.
A BPEL process (workflow) may proceed according to one of several possibilities. For instance, in the above new-employee example, creation of an identity may proceed quite differently if the new employee is a vice president of a division than if the new employee is a receptionist. The vice president may require, for example, access to confidential and sensitive data used in an accounting system, while a receptionist would have no use for such information and, therefore, it would be an unnecessary risk to register the receptionist with the accounting system.
Typically, BPEL processes are created to define multiple child processes for all possibilities and design the workflow such that the proper child process or processes are invoked depending on some user input, such as the type of employee being registered. Designing BPEL workflows in this manner means that the business logic of the workflow is static and requires changing when new processes are to be included. Also, designing workflows in this way does not provide an administrator a capability of dynamically deciding which web services to invoke depending on attributes of the user.